\subsection{Utilização}

O driver implementado é utilizado tal como outro driver JDBC. A versão 4.0 da API JDBC introduziu a funcionalidade de carregamento de um \texttt{java.sql.Driver} \cite{JDBCAPI}, através da utilização do mecanismo \emph{Java SE Service Provider}. Isto significa que já não é necessário invocar \texttt{Class.forName}. O driver suporta esta funcionalidade, por isso para obter uma ligação à base de dados basta utilizar o código apresentado na Listagem \ref{lst:getcon}. O jar do driver tem que se encontrar no \gls{classpath}.

\lstinputlisting[firstline=1,lastline=2,caption=Obtenção de uma ligação.,label=lst:getcon]{code/usage.java}

Em que url é uma String no formato descrito na secção \ref{sec:jdbctut-connection}.

O que é novo é a possibilidade de criar vários objectos result set (cursores cliente) que utilizam o mesmo cursor do servidor, operando assim sobre o mesmo \gls{dataset}. Para tal é necessário obter uma instância da interface \emph{ICStatement}. Esta interface fornece o serviço \texttt{getCursor()} que devolve um cursor cliente. A interface \emph{ICStatement} estende a interface \emph{Statement}. 
A classe que as implementa devolve um cursor com cache partilhado (\ref{sec:shared-cache}) quando o valor de \emph{fetch size} é igual a zero, e devolve um cursor com cache individual (\ref{sec:ind-cache}) quando o valor de \emph{fetch size} é superior a zero (um valor inferior a zero é inválido). Uma vez que por pré-definição o valor de \emph{fetch size} é superior a zero, se o método setFetchSize da interface ResultSet não for explicitamente invocado então será criado um cursor com cache individual. Será então boa prática utilizar o método setFetchSize explicitamente, para evitar confusões.

\begin{figure}[H]
  \caption{Classes principais na utilização da solução Cursor.}
  \label{fig:class-overview}
  \centering
  \includegraphics[width=12.0cm]{images/model/cjdbc-class-overview}
\end{figure}

As listagens \ref{lst:create-shared-cursor} e \ref{lst:create-ind-cursor} exemplificam a criação de um cursor cliente com cache partilhado e de um cursor cliente com cache individual, respectivamente.

\lstinputlisting[firstline=6,lastline=11,texcl=true,caption=Criação de um cursor cliente com cache partilhado.,label=lst:create-shared-cursor]{code/usage.java}

\lstinputlisting[firstline=14,lastline=19,texcl=true,caption=Criação de um cursor cliente com cache individual.,label=lst:create-ind-cursor]{code/usage.java}

Com a excepção da última linha de cada listagem, a criação é igual para ambos e deve ser bastante familiar e intuitiva para quem já utiliza a API JDBC. A partir da criação, cada cursor cliente pode ser utilizado como um ResultSet, tal como está definido na documentação da API \cite{PACKSQL}.
